#include <iostream>
#include <signal.h>
#include <vector>
#include <unistd.h>

#define MAX_SIGNUM 31

static std::vector<int> sigarr = {2, 3};

static void show_pending(const sigset_t &pending)
{
    for (int signo = MAX_SIGNUM; signo > 0; signo--)
    {
        //判断指定信号在不在信号集中
        if (sigismember(&pending, signo)) std::cout << "1";
        else std::cout << "0";
    }
    std::cout << std::endl;
}


int main()
{
    sigset_t block, oblock, pending;
    //初始化
    sigemptyset(&block);
    sigemptyset(&oblock);
    sigemptyset(&pending);

    //添加要屏蔽的信号
    for(const auto &sig : sigarr) sigaddset(&block, sig);
    //将屏蔽的信号设置进信号屏蔽字中
    sigprocmask(SIG_SETMASK, &block, &oblock);

    while (true)
    {
        //获取处于未决状态的信号集
        sigpending(&pending);
        //进行打印输出
        show_pending(pending);
        sleep(1);
    }
}